.TH LS48 1
.\" File scheme48.man:  Manual page template for Scheme 48.
.\" Replace LS48 with the name of your default image and LLIB with the
.\" directory containing scheme48vm and default image.
.SH NAME
LS48 \- a Scheme interpreter
.SH SYNOPSIS
.B LS48
[-i image] [-h heapsize] [-a argument]
.SH DESCRIPTION
.B LS48
is an implementation of the Scheme programming language as described in
the
.I "Revised^5 Report on the Algorithmic Language Scheme."
A runnable system requires two parts, an executable program that implements
the Scheme 48 virtual machine, and an image that is used to initialize
the store of the virtual machine.
.B LS48
is a shell script that starts the virtual machine with an image that runs
in a Scheme command loop.
.PP
The
.B LS48
command loop reads Scheme expressions, 
evaluates them, and prints their results.
It also executes commands, which are identified by an initial comma character.
Type the command
.I ,help
to receive a list of available commands.
.PP
The meaning of the
.B \-h
option depends on the type of garbage collector that was chosen at
configuration time.  If
.IR heapsize
is a positive number, it specifies
the number of words that can be live at any given time.
One word is four bytes.  Cons cells are currently 3 words,
so if you want to make sure you can allocate, say, a million cons
cells, you should specify
.B \-h
3000000 (actually a little more, to account for the initial heap
image and breathing room).
.PP
If you specify a
maximum smaller than the memory needed to load the image file, the
maximum is increased accordingly and a message is written to the
console.
.PP
For the BIBOP garbage collector, 
.IR heapsize
may be 0.  This means the heap will
possibly keep growing until your system runs out of memory. Because of
this risk, a warning message is written to the console if you specify
.B -h
0.
.PP
The 
.I ,dump
and
.I ,build
commands put heap images in files.
The 
.B \-i
option causes the initial heap image to be taken from file
.IR image .
The
.B \-a
option causes a list of strings to be passed as the argument
to an image generated using the 
.I ,build
command.  The first argument to
.I ,build
is a procedure that is passed
the arguments following
.B \-a
and which should return an integer (which is the
return value of the Scheme 48 process).
.PP
.nf
     > ,build (lambda (a) (display a) (newline) 0) foo.image
     > ,exit
     $ LS48 -i foo.image -a mumble
     mumble
     $ 
.PP
.fi
.SH FILES
.TP 40
.B LLIB/scheme48vm
the virtual machine.
.TP
.B LLIB/LS48.image
the default image.
